package com.tepth.maintenancesystem.api;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

import com.tepth.maintenancesystem.R;
import com.tepth.maintenancesystem.bean.User;
import com.tepth.maintenancesystem.bean.VersionUpdate;
import com.tepth.maintenancesystem.service.Update_App;
import com.tepth.maintenancesystem.untils.Untils;

import org.json.JSONObject;

import java.util.ArrayList;

/**
 * Created by LHQ on 2016/12/8.
 */

public class LoginHttp {

    /**
     * 用存储的用户进行登录
     *
     * @param context
     * @return
     */
    public static String login(Context context) {
        try {
            ArrayList<User> users = Untils.getUserList(context);
            if (users.size() > 0) {
                int index = Untils.getUserIndex(context);
                String url = String.format(HttpClient.BASE_URL + "verification.ashx?platform=SmartFam&action=Login&loginName=%s&password=%s&appName=smartFAM_apk&appVersion="+Untils.getAppVersionName(context)+"&osName=Android&osVersion="+android.os.Build.VERSION.RELEASE, users.get(index).getId(), users.get(index).getPwd());
                String resultStr = HttpClient.sendGet(url, null);
                JSONObject jsonObject = new JSONObject(resultStr);
                String code = jsonObject.getString("ResultCode");
                if (code.equals(HttpClient.SUCCESS)) {
                    JSONObject resultObj = jsonObject.getJSONObject("Result");
                    users.get(index).setAuthKey(resultObj.getString("AuthKey"));
                    users.get(index).setLoginName(resultObj.getString("LoginName"));
                    users.get(index).setPersonCode(resultObj.getString("PersonCode"));
                    users.get(index).setPersonName(resultObj.getString("PersonName"));
                    users.get(index).setOrgName(resultObj.getString("OrgName"));
                    users.get(index).setDeptName(resultObj.getString("DeptName"));
                    users.get(index).setGroupName(resultObj.getString("GroupName"));
                    users.get(index).setJobName(resultObj.getString("JobName"));
                    Untils.saveUserList(context, users);//存储用户列表
//                    JSONObject referObj = jsonObject.getJSONObject("Refer");
//                    VersionUpdate update = new VersionUpdate(referObj);
//                    Untils.saveVersionUpdate(context, update);
//                    if (getVersion(context).equals(update.getAppVersion())) {//登陆成功
                        return HttpClient.SUCCESS;
//                    } else {//提示更新
//                        return HttpClient.ERROR_VERSION;
//                    }
                } else if (code.equals(HttpClient.ERROR_USER)) {
                    return jsonObject.getString("ResultMsg");
                }
            } else {
                return HttpClient.NO_USER;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return HttpClient.ERROR_NET;
        }
        return "";
    }

    /**
     * 新用户登录
     *
     * @param context
     * @param user
     * @return
     */
    public static String login(Context context, User user) {
        try {
            String url = String.format(HttpClient.BASE_URL + "verification.ashx?platform=SmartFam&action=Login&loginName=%s&password=%s&appName=smartFAM_apk&appVersion="+Untils.getAppVersionName(context)+"&osName=Android&osVersion="+android.os.Build.VERSION.RELEASE, user.getId(), user.getPwd());
            String resultStr = HttpClient.sendGet(url, null);
            JSONObject jsonObject = new JSONObject(resultStr);
            String code = jsonObject.getString("ResultCode");
            if (code.equals(HttpClient.SUCCESS)) {
                JSONObject resultObj = jsonObject.getJSONObject("Result");
                user.setAuthKey(resultObj.getString("AuthKey"));
                user.setLoginName(resultObj.getString("LoginName"));
                user.setPersonCode(resultObj.getString("PersonCode"));
                user.setPersonName(resultObj.getString("PersonName"));
                user.setOrgName(resultObj.getString("OrgName"));
                user.setDeptName(resultObj.getString("DeptName"));
                user.setGroupName(resultObj.getString("GroupName"));
                user.setJobName(resultObj.getString("JobName"));
                ArrayList<User> users = Untils.getUserList(context);
                if(users.size()>0){
                    boolean isContains=false;
                    for (int i=0;i<users.size();i++){
                        if(users.get(i).getId().equals(user.getId())){
                            Untils.setUserIndex(context, i);
                            isContains=true;
                            users.get(i).setmPwd(user.getPwd());
                            users.get(i).setAuthKey(user.getAuthKey());
                            users.get(i).setLoginName(user.getLoginName());
                            users.get(i).setPersonCode(user.getPersonCode());
                            users.get(i).setPersonName(user.getPersonName());
                            users.get(i).setOrgName(user.getOrgName());
                            users.get(i).setDeptName(user.getDeptName());
                            users.get(i).setGroupName(user.getGroupName());
                            users.get(i).setJobName(user.getJobName());
                            break;
                        }
                    }
                    if(!isContains){
                        users.add(user);
                        Untils.setUserIndex(context, users.size() - 1);
                    }
                }else{
                    Untils.setUserIndex(context, 0);
                    users.add(user);
                }
                Untils.saveUserList(context, users);//存储用户列表
//                JSONObject referObj = jsonObject.getJSONObject("Refer");
//                VersionUpdate update = new VersionUpdate(referObj);
//                Untils.saveVersionUpdate(context, update);
//                if (getVersion(context).equals(update.getAppVersion())) {//登陆成功
                    return HttpClient.SUCCESS;
//                } else {//提示更新
//                    return HttpClient.ERROR_VERSION;
//                }
            } else {
                return jsonObject.getString("ResultMsg");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return HttpClient.ERROR_NET;
        }
    }

    /**
     * 获取当前应用版本号
     * @param context
     * @return
     */
    public static String getVersion(Context context) {
        try {
            PackageManager manager = context.getPackageManager();
            PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0);
            String version = info.versionName;
            return version;
        } catch (Exception e) {
            e.printStackTrace();
            return "1.0.0";
        }
    }

    /**
     * 弹窗提示更新
     * @param context
     */
    public static void checkVersion(final Context context){
        // 发现新版本，提示用户更新
        AlertDialog.Builder alert = new AlertDialog.Builder(context);
        final VersionUpdate update=Untils.getVersionUpdate(context);
        alert.setTitle("软件升级")
                .setMessage("发现新版本,建议立即更新使用." + "\n" + update.getAppRemark())
                .setPositiveButton("更新", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Intent updateIntent = new Intent(context,
                                Update_App.class);
                        updateIntent.putExtra("app_name", context
                                .getResources().getString(R.string.app_name));
                        updateIntent.putExtra("url", update.getAppUrl());
                        context.startService(updateIntent);

                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
        alert.create().show();
    }
}
